#ifndef SCRIPTCLIENT_H
#define SCRIPTCLIENT_H
#include "BaseClient.h"

namespace CURCONTROL {

/*!
* \brief 脚本客户端：负责发送脚本
*/
class ScriptClient : public BaseClient
{
public:
    ScriptClient();
    ~ScriptClient() override;
    /*!
   * \brief 与机械臂建立链接
   *
   * \param[in] 机械臂ip
   *
   * \returns 链接成功返回true
   */
    bool Connect(const std::string& robotIp);
    /*!
   * \brief 发送脚本文件
   *
   * \param[in] 脚本文件名称
   *
   * \returns 发送成功返回true
   */
    bool SendScript(const std::string& fileName);
    /*!
   * \brief 发送UR脚本指令
   *
   * \param[in] 指令
   *
   * \returns 发送成功返回true
   */
    bool SendCommand(const std::string& command);

private:
    /*!
   * \brief 复位自身状态
   */
    void Clear() override;
    /*!
   * \brief 解析脚本端口的数据
   *
   * \param[in] 获取的待解析的通信数据
   */
    void ReceiveCallback(std::vector<uint8_t> &bytes);
    /*!
   * \brief 读取脚本内容
   *
   * \param[in] 脚本名称
   *
   * \returns 成功返回true
   */
    bool LoadScript(const std::string &fileName);

private:
    std::string rtdeScript_;
};

}// namespace CURCONTROL
#endif // SCRIPTCLIENT_H
